//
//  RSDeviceInfo.h
//  RSTools
//
//  Created by thinkjoy on 2017/9/12.
//  Copyright © 2017年 杜瑞胜. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface RSDeviceInfo : NSObject

#pragma mark    - 获取IDFV、IDFA、IMEI、MAC、UDID、UUID

/**
 国际移动站设备身份（IMEI）：iOS5之后被禁用，任何获取IMEI号码的方法都是使用私有方法，这也是苹果不再允许的。
 
 MAC地址：获取设备MAC,iOS7之后Apple进行了处理，真机获取不到真实的Mac地址，统一返回02:00:00:00:00:00；
 
 UDID(Unique Device Identifier)：Apple从2013年05月01日起拒绝接受使用UDID的应用后,越狱开发可参考http://stackoverflow.com/questions/27602368/how-to-get-serial-number-of-a-device-using-iokit-in-ios8-as-ioplatformserialnumb/27686125#27686125
 
 IDFA(广告标识符)-identifierForldentifier：每个设备只有一个IDFA，不同APP在同一设备上获取IDFA的结果是一样的,设备重启不会产生新的IDFA;
    -但IDFA存在重新生成的情况:1.用户完全重置系统(设置程序 -> 通用 -> 还原 -> 还原位置与隐私)；2.用户明确还原广告(设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符)；
    -IDFA会出现取不到的情况，故绝不可以作为业务分析的主id，来识别用户；
    -Appstore禁止不使用广告而采集IDFA的app上架；
 
 IDFV（identifierForVendor）：IDFV是apple给供应商唯一的一个标示，也就是说同一个公司发行的的app在相同的设备上运行的时候会有这个相同的标识符。然而，如果用户删除了这个供应商的所有app然后再重新安装的话，这个标识符就会不一致。
 
 UUID(Universally Unique Identifie)通用唯一标识符:是一个32位的十六进制序列，使用小横线来连接：8-4-4-4-12 。同一台设备每次产生的UUID都是不一样的。但配合一个钥匙串管理开源库SAMKeychain[https://github.com/soffes/SAMKeychain]使用，可作为设备唯一码使用;
 */


/**
获取设备IMEI
*  @return 设备IMEI
*/
+(NSString*)rs_getDeviceIMEI;

/**
获取设备MAC,iOS7之后Apple进行了处理，真机获取不到真实的Mac地址，统一返回02:00:00:00:00:00；

@return Mac
*/
+(NSString*)rs_getDeviceMAC;

/**
 获取设备UDID,Apple从2013年05月01日起拒绝接受使用UDID的应用

 @return 设备UDID
 */
+(NSString*)rs_getDeviceUDID;

/**
 获取设备IDFA(广告标识符)-identifierForldentifier;
 每个设备只有一个IDFA，不同APP在同一设备上获取IDFA的结果是一样的,设备重启不会产生新的IDFA;
 但IDFA存在重新生成的情况:
 用户完全重置系统(设置程序 -> 通用 -> 还原 -> 还原位置与隐私)
 用户明确还原广告(设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符)
 Appstore禁止不使用广告而采集IDFA的app上架,不使用请删除该方法。
 Appstore禁止不使用广告而采集IDFA的app上架,不使用请删除该方法。
 Appstore禁止不使用广告而采集IDFA的app上架,不使用请删除该方法。
 作者：起个名字想破头
 链接：http://www.jianshu.com/p/0ba161cff01e
 來源：简书
 
 @return    设备IDFA(广告标识符)-identifierForldentifier
 */
+(NSString *)rs_getDeviceIDFA;

/**
 获取设备IDFV（identifierForVendor）;
 IDFV是apple给供应商唯一的一个标示，也就是说同一个公司发行的的app在相同的设备上运行的时候会有这个相同的标识符。然而，如果用户删除了这个供应商的所有app然后再重新安装的话，这个标识符就会不一致。
 
 @return 设备IDFV
 */
+(NSString *)rs_getDeviceIDFV;

/**
 获取设备UUID,获取固定的UUID需要配合一个钥匙串管理开源库SAMKeychain[https://github.com/soffes/SAMKeychain];
 
 @param isRandom YES=获取随机的UUID，每次都不一样；NO=获取固定的UUID，通过钥匙串实现；默认为NO；
 @return UUID
 */
+(NSString*)rs_getDeviceUUIDByRandom:(BOOL)isRandom;

@end
